約 3,981,962 件
https://w.atwiki.jp/vst_prog/pages/90.html
VST Tips(準備中) EnvelopeGeneratorの実装例(作成中) なお、本サンプル利用を使用したことによって生じたすべての障害・損害・不具合等に関しては、一切の責任を負いません。各自の責任においてご使用ください。 サンプルコード全体 ソースコードのダウンロード→ ここをクリック (dllファイルも同梱しております。dllファイルのウィルスチェックはしておりませんのでdllファイル利用の前には必ずチェックをお願いいたします。) VST Tipsトップページへ(準備中) 同一カテゴリのTips 項目 No. 概要
https://w.atwiki.jp/talesofdic/pages/20369.html
アリス・シンセシス・サーティ 年齢:19歳 性別:女性 身長:??cm 体重:??kg 声優:アリーシャ 「SAO」シリーズのキャラクターの一人。SAOコラボ第二弾にて参戦。 すでに同名のキャラがいるため「アリス(SAO)」と表記される。
https://w.atwiki.jp/vst_prog/pages/26.html
VST(エフェクター)作り概要 エフェクター設計 VST基本情報の決定 エフェクターを設計する前に以下の項目を決めておく必要がある。 項目 説明 例 作者(ベンダー)名 作成した人や会社の名前半角英数63文字以内 VSTバージョン 作成するVSTのバージョン(32ビット整数で表せるように) 1.0.0 (32ビット整数で100にする)120100401 等 VSTの製品名 VSTの製品名半角英数63文字以内 DelayDistortion 等 VSTの名前 VSTの名前。半角英数31文字以内 (VSTの製品名と何が違うのかは不明。文字数に問題がなければVSTの製品名と同じでよい。) 入力の数 エフェクターの入力の数 モノラルの場合…1ステレオの場合…2 出力の数 エフェクターの出力の数 モノラルの場合…1ステレオの場合…2 ユニークID VSTを区別するためのID作成したVSTを公開する場合は以下URLで登録を行い、発行されたユニークIDを入力する。http //ygrabit.steinberg.de/~ygrabit/public_html/index.html プリセットの数 プリセットプログラムの数 以下のプリセットプログラムを持つディレイの場合…3- Long Delay- Short Delay- Cross Delay パラメータの数 Hostプログラム(Cubase、Sonarなど)がコントロールできるパラメータの数(パラメーターに関してはさらに設計の必要がある(後述)) 以下のパラメータを持つディレイの場合…4- Delay Type- Delay Time- Feedback Level- Delay Level パラメーター情報の決定 各パラメーターごとに以下の項目を決めておく必要がある 項目 説明 パラメーター名 パラメーターの名前半角英数8文字 表示方法 パラメーターの値をどう表示するか(整数で表示するのか?文字列で表示するのか? 等)半角英数8文字 単位 パラメーターの単位半角英数8文字 範囲 パラメータのとりうる範囲 デフォルト値 パラメータのデフォルトの値 例:Delayの場合 No. パラメーター名 表示方法 単位 範囲 デフォルト値 0 Type ディレイタイプ(文字列) なし mono,stereo,cross stereo 1 Time ディレイタイム(小数点表示) ms 100~1000 500 2 Feedback フィードバック量(小数点表示) % 0~100 30 3 Level 出力音量(小数点表示) % 0~100 25 その他設計 作成するVSTにあわせて、アルゴリズムや内部変数等の設計を行う。 例: どのようなアルゴリズムで実装するか? 内部で使用する変数はどうするか? 等 次へ 合計: - 今日: - 昨日: -
https://w.atwiki.jp/vst_prog/pages/42.html
VST(エフェクター)作成例 VST情報の処理 VSTの情報をホストアプリケーション(Cubase,Sonar等)に通知するための関数を作成する。 作成者(ベンダー)情報の処理 ホストアプリケーションに作成者(ベンダー)の情報を知らせる。 引数のchar* textに作成者(ベンダー)の名前を保存し、trueを返す。(falseを返すとどういう動きをするかは不明) 引数のchar* textは64バイト。NULL文字で終端させる必要がある。 サンプルエフェクターではMY_VST_VENDOR(宣言部で定義済み。)を引数のchar* textに格納している。 bool MyTremoloVST getVendorString (char* text){//作者(ベンダー)名をtextに格納してtrueを返す。//kVstMaxVendorStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxVendorStrLen = 64)vst_strncpy (text, MY_VST_VENDOR, kVstMaxVendorStrLen);return true;} 作成したVSTのバージョンの処理 ホストアプリケーションに作成したVSTのバージョンを知らせる。 バージョンは整数で返す必要があるため、適当に変換する。 【例】 バージョン 返す値 説明 1.03 103 メジャーバージョン1を100の位に、マイナーバージョン0.03を1と10の位に割り当てる サンプルエフェクターではMY_VST_VERSION(宣言部で定義済み。)を返している。 VstInt32 MyTremoloVST getVendorVersion (){//バージョン(整数)を返す。return MY_VST_VERSION;} 製品名の処理 ホストアプリケーションに製品名を知らせる。 引数のchar* textに製品の名前を保存し、trueを返す。(falseを返すとどういう動きをするかは不明) 引数のchar* textは64バイト。NULL文字で終端させる必要がある。 サンプルエフェクターではMY_VST_PRODUCT_NAME(宣言部で定義済み。)を引数のchar* textに格納している。 bool MyTremoloVST getProductString (char* text){//製品名をtextに格納してtrueを返す。//kVstMaxProductStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxProductStrLen = 64)vst_strncpy (text, MY_VST_PRODUCT_NAME, kVstMaxProductStrLen);return true;} エフェクター名の処理 ホストアプリケーションにエフェクター名を知らせる。 引数のchar* nameに製品の名前を保存し、trueを返す。(falseを返すとどういう動きをするかは不明) 引数のchar* nameは32バイト。NULL文字で終端させる必要がある。 サンプルエフェクターではMY_VST_NAME(宣言部で定義済み。)を引数のchar* textに格納している。 bool MyTremoloVST getEffectName (char* name){//製品名をnameに格納してtrueを返す。//kVstMaxEffectNameLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxEffectNameLen = 32)vst_strncpy (name, MY_VST_NAME, kVstMaxEffectNameLen);return true;} 次へ 合計: - 今日: - 昨日: -
https://w.atwiki.jp/vst_prog/pages/40.html
VST(エフェクター)作成例 クラスの宣言 VSTはAudioEffectXクラスを継承して作る (AudioEffectXクラスは「vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h」で定義されている) サンプルエフェクターでは次のように定義している。 class MyTremoloVST public AudioEffectX{protected float fTime;float fTremoloSpeed; //トレモロの周期float fTremoloDepth; //トレモロの振幅 public MyTremoloVST (audioMasterCallback audioMaster);~MyTremoloVST (); //作者(ベンダー)名、バージョン、製品名、VSTの名前を//Hostアプリケーションへ知らせるメンバー関数virtual bool getVendorString (char* text);virtual VstInt32 getVendorVersion ();virtual bool getProductString (char* text);virtual bool getEffectName (char* name); // エフェクターのパラメータに関するメンバー関数virtual void setParameter (VstInt32 index, float value);virtual float getParameter (VstInt32 index);virtual void getParameterName (VstInt32 index, char* text);virtual void getParameterLabel (VstInt32 index, char* label);virtual void getParameterDisplay (VstInt32 index, char* text); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);}; AudioEffectXクラスから必ずオーバーライドしなければならない関数は以下のとおり 関数名 戻り値 引数 概要 getVendorString bool型 char* text ホストアプリケーションに作者(ベンダー)名を教えるための関数作者(ベンダー)名をtextに格納する。作者(ベンダー)名の格納に成功するとtrueを返す getVendorVersion VstInt32 なし ホストアプリケーションにVSTバージョンを教えるための関数VSTバージョンを返す getProductString bool型 char* text ホストアプリケーションにVSTの製品名を教えるための関数VSTの製品名をtextに格納する。VSTの製品名の格納に成功するとtrueを返す getEffectName bool型 char* name ホストアプリケーションにVSTの名前を教えるための関数VSTの名前をnameに格納する。VSTの名前の格納に成功するとtrueを返す setParameter なし VstInt32 indexfloat value ホストアプリケーションがパラメータに値を設定するための関数indexで示されるパラメータにvalueの値を設定するvalueは0.0~1.0の範囲で渡される getParameter float型 VstInt32 index ホストアプリケーションにパラメータの値を教えるための関数indexで示されるパラメータの値を返す戻り値は0.0~1.0の間でなければならない getParameterName なし VstInt32 indexchar* text ホストアプリケーションにパラメータの名前を教えるための関数indexで示されるパラメータの名前をtextに格納する。 getParameterLabel なし VstInt32 indexchar* label ホストアプリケーションにパラメータの単位を教えるための関数indexで示されるパラメータの単位をlabelに格納する。 getParameterDisplay なし VstInt32 indexchar* text ホストアプリケーションにパラメータの表示内容を教えるための関数indexで示されるパラメータの表示内容をtextに格納する。 processReplacing なし float** inputsfloat** outputsVstInt32 sampleFrames 音声処理を行う関数。定期的にホストアプリケーションから呼び出される。バッファinputsで与えられる音声信号を加工してバッファoutputsに格納する。処理するバッファサイズはsampleFramesで与えられる。 次へ 合計: - 今日: - 昨日: -
https://w.atwiki.jp/dtmer/pages/41.html
Steinberg s Virtual Studio Technologyの略称。 ソフトシンセやエフェクター?と波形編集ソフト?やDAW?との間のデータの受け渡しを繋ぎ、操作を簡単にするために画像などに出力した標準的な規格の一つである。 スタインバーグ?が開発し、ライセンスを保有している。 プラグインとして提供されるため、DAWなどのホストアプリケーション上でのみ 動作する。 一般的にVSTは処理が複雑であり、遅延することが多い為ASIOデバイスと 共に使われることが多い。 種類 VSTi(インストゥルメント)ソフトシンセとしてのプラグイン。MIDI音源として使われ、非常に多くの種類がある。 VSTe(エフェクト)音響装置としてのプラグイン。出力された音に特殊効果(エフェクト)を掛けるために使われる。 具体的な利用例については「無償版VSTプラグイン」を参照のこと。 関連項目 DXi
https://w.atwiki.jp/vstplugins/pages/27.html
VOKATOR 数少ないボコーダーのプラグインエフェクトのひとつです。 MIDIA (日本輸入元) Native-Instruments (開発元) ソフトウェア バージョン履歴 公開日 主な特徴 超高解像度FFTスペクトラル・エンジン マルチチャンネル・ボコーディング・モード 4~1024バンド対応:バンド数を変えながら操作可能 フル機能を搭載したデュアル・オシレター・シンセサイザー:ダイナミック・パッチ・モーフィング機能、マルチプル・フィルター・モード、FM グラニュラー・サンプラー:タイム、ピッチの独立コントロール対応 リアルタイム・スペクラム・ディスプレー:入力段、出力段 先進のモジュレーション・セクション:ステップ・シーケンサー、テンポ同期型LFO、エンベロープ・フォロワー、V/U(Voice/Unvoice)ディテクター 周波数バンド・コンプレッサー:出力段 カスタム・フィルター:スペクトラル・カーブ対応、ブレーク・ポイント・エディタ対応のグラフィック・イコライザー ゲート、レベル・コンプレッサー:入力段、マルチバンド・コンプレッサー:出力段 400以上のプリセット、300MBものZero-G製サンプル・ライブラリ付属 対応インターフェイス・フォーマット ●VST 2.0 (Win/Mac) ●Audio Units (OS X) ●RTAS (OS X) ●DXi (Win) ●ASIO 2.0 (Win/Mac) ●Direct Sound (Win) ●Core Audio (OS X) ●Core MIDI (OS X) ●MAS (OS9)<非対応> ●Direct Connect (OS9)<非対応> ●OMS (OS9)<非対応> ●Sound Manager (OS9)<非対応> 名前 コメント
https://w.atwiki.jp/vst_prog/pages/28.html
VST(エフェクター)作り概要 コーディング audioeffectx.hのインクルード VSTを作るうえで必要なヘッダーファイル「audioeffectx.h」をインクルードする。 AudioEffectXクラスの継承 VSTを作成する場合、AudioEffectXクラスを継承して作る (AudioEffectXクラスは「vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h」で定義されている) AudioEffectXクラスから必ずオーバーライドしなければならない関数は以下のとおり 関数名 戻り値 引数 概要 getVendorString bool型 char* text ホストアプリケーションに作者(ベンダー)名を教えるための関数作者(ベンダー)名をtextに格納する。作者(ベンダー)名の格納に成功するとtrueを返す getVendorVersion VstInt32 なし ホストアプリケーションにVSTバージョンを教えるための関数VSTバージョンを返す getProductString bool型 char* text ホストアプリケーションにVSTの製品名を教えるための関数VSTの製品名をtextに格納する。VSTの製品名の格納に成功するとtrueを返す getEffectName bool型 char* name ホストアプリケーションにVSTの名前を教えるための関数VSTの名前をnameに格納する。VSTの名前の格納に成功するとtrueを返す setParameter なし VstInt32 indexfloat value ホストアプリケーションがパラメータに値を設定するための関数indexで示されるパラメータにvalueの値を設定するvalueは0.0~1.0の範囲で渡される getParameter float型 VstInt32 index ホストアプリケーションにパラメータの値を教えるための関数indexで示されるパラメータの値を返す戻り値は0.0~1.0の間でなければならない getParameterName なし VstInt32 indexchar* text ホストアプリケーションにパラメータの名前を教えるための関数indexで示されるパラメータの名前をtextに格納する。 getParameterLabel なし VstInt32 indexchar* label ホストアプリケーションにパラメータの単位を教えるための関数indexで示されるパラメータの単位をlabelに格納する。 getParameterDisplay なし VstInt32 indexchar* text ホストアプリケーションにパラメータの表示内容を教えるための関数indexで示されるパラメータの表示内容をtextに格納する。 processReplacing なし float** inputsfloat** outputsVstInt32 sampleFrames 音声処理を行う関数。定期的にホストアプリケーションから呼び出される。バッファinputsで与えられる音声信号を加工してバッファoutputsに格納する。処理するバッファサイズはsampleFramesで与えられる。 例 class SampleVST public AudioEffectX { protected //設計したパラメータや内部変数・関数を記述する public //コンストラクタ・デストラクタ SampleVST (audioMasterCallback audioMaster); ~SampleVST (); //以下AudioEffectXクラスからオーバーライドした関数 //作者(ベンダー)名、バージョン、製品名、VSTの名前を //Hostアプリケーションへ知らせるメンバー関数 virtual bool getVendorString (char* text); virtual VstInt32 getVendorVersion (); virtual bool getProductString (char* text); virtual bool getEffectName (char* name); // エフェクターのパラメータに関するメンバー関数 virtual void setParameter (VstInt32 index, float value); virtual float getParameter (VstInt32 index); virtual void getParameterName (VstInt32 index, char* text); virtual void getParameterLabel (VstInt32 index, char* label); virtual void getParameterDisplay (VstInt32 index, char* text); // 音声信号を処理するメンバー関数 virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); }; createEffectInstance関数の定義 createEffectInstance関数を定義する必要がある。 例 AudioEffect* createEffectInstance (audioMasterCallback audioMaster) { //newでこのVSTを生成したポインタを返す return new SampleVST (audioMaster); } 合計: - 今日: - 昨日: -
https://w.atwiki.jp/vst_prog/pages/34.html
VST(エフェクター)作成例 VST SDKのCPPファイルの追加 VSTエフェクターを作るうえで必要なVST SDKのCPPファイルをプロジェクトに追加する。 プロジェクトに必要なVST SDKのCPPファイルは以下のとおりである。 audioeffect.cpp audioeffectx.cpp vstplugmain.cpp 既存の項目の追加 画面右側のソリューションエクスプローラで「リソースファイル」を選択し、右クリックを押す。 開いたポップアップメニューで「追加」→「既存の項目」を選択する。 追加するファイルの選択 vstsdk2.4\public.sdk\source\vst2.xの配下にある以下3つのファイルを選択し、「追加」を押す。 audioeffect.cpp audioeffectx.cpp vstplugmain.cpp 「リソースファイル」の配下に3つのファイルが追加されれば完了。 次へ 合計: - 今日: - 昨日: -
https://w.atwiki.jp/vst_prog/pages/20.html
VST(エフェクター)作成例 参考資料 サンプルコード全体 ソースコードのダウンロード→ここをクリック // ============================================================================================// インクルードファイル// ============================================================================================#include stdio.h #include stdlib.h #include string.h #include math.h #include windows.h #include "audioeffectx.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_VENDOR "test vendor" //作者(ベンダー)名#define MY_VST_VERSION 1 //このVSTバージョン#define MY_VST_PRODUCT_NAME "Sample Tremolo VST" //このVSTの製品名#define MY_VST_NAME "Tremolo" //このVSTの名前 #define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2#define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2 #define MY_VST_UNIQUE_ID SMPL //ユニークID //公開する場合は以下URLで発行されたユニークIDを入力する。 //http //ygrabit.steinberg.de/~ygrabit/public_html/index.html #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数#define MY_VST_PARAMETER_NUM 2 //パラメータの数 //このVSTのパラメータを定義しておく。//0からの連番でなければならない。#define TREMOLO_SPEED 0#define TREMOLO_DEPTH 1 // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyTremoloVST public AudioEffectX{protected float fTime; //トレモロ用に経過時間を保存する変数float fTremoloSpeed; //トレモロの周期float fTremoloDepth; //トレモロの振幅 public MyTremoloVST (audioMasterCallback audioMaster);~MyTremoloVST (); //作者(ベンダー)名、バージョン、製品名、VSTの名前を//Hostアプリケーションへ知らせるメンバー関数virtual bool getVendorString (char* text);virtual VstInt32 getVendorVersion ();virtual bool getProductString (char* text);virtual bool getEffectName (char* name); // エフェクターのパラメータに関するメンバー関数virtual void setParameter (VstInt32 index, float value);virtual float getParameter (VstInt32 index);virtual void getParameterName (VstInt32 index, char* text);virtual void getParameterLabel (VstInt32 index, char* label);virtual void getParameterDisplay (VstInt32 index, char* text); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyTremoloVST (audioMaster);} // ============================================================================================// コンストラクタ、デストラクタ(VSTの初期化、終了処理を記述)// ============================================================================================MyTremoloVST MyTremoloVST (audioMasterCallback audioMaster) AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM){//VSTの初期化を行う。 //以下の関数を呼び出して入力数、出力数等の情報を設定する。//必ず呼び出さなければならない。setNumInputs (MY_VST_INPUT_NUM); //入力数の設定setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定 isSynth (false); //このVSTがSynthかどうかのフラグを設定。 //Synthの場合…true、Effectorの場合…false canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。 //音声処理を行わないVSTはないので必ずこの関数を呼び出す。 //このVSTのパラメータを初期化する。fTime = 0.0f; fTremoloSpeed = 1.0f / 4.0f; //トレモロの周期 0.25秒fTremoloDepth = 0.5f; //トレモロの振幅 0.5倍} MyTremoloVST ~MyTremoloVST (){//VSTの終了処理をする。//このVSTでは特に実行する処理はなし。} // ============================================================================================// 作者(ベンダー)名、バージョン、製品名、VSTの名前をHostアプリケーションへ知らせるメンバー関数// ============================================================================================bool MyTremoloVST getVendorString (char* text){//作者(ベンダー)名をtextに格納してtrueを返す。//kVstMaxVendorStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxVendorStrLen = 64)vst_strncpy (text, MY_VST_VENDOR, kVstMaxVendorStrLen);return true;} VstInt32 MyTremoloVST getVendorVersion (){//バージョン(整数)を返す。return MY_VST_VERSION;} bool MyTremoloVST getProductString (char* text){//製品名をtextに格納してtrueを返す。//kVstMaxProductStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxProductStrLen = 64)vst_strncpy (text, MY_VST_PRODUCT_NAME, kVstMaxProductStrLen);return true;} bool MyTremoloVST getEffectName (char* name){//製品名をnameに格納してtrueを返す。//kVstMaxEffectNameLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxEffectNameLen = 32)vst_strncpy (name, MY_VST_NAME, kVstMaxEffectNameLen);return true;} // ============================================================================================// エフェクターのパラメーターの設定、表示を行うメンバー関数// ============================================================================================void MyTremoloVST setParameter (VstInt32 index, float value){//indexで指定されたパラメータに値を設定する。//valueは0.0f~1.0fで与えられる。switch (index){case TREMOLO_SPEED fTremoloSpeed = 1.0f / (29.0f*value +1.0f); //1秒~1/30秒の範囲にするbreak;case TREMOLO_DEPTH fTremoloDepth = value;break;}} float MyTremoloVST getParameter (VstInt32 index){//indexで指定されたパラメータの値を//0.0f~1.0fの範囲で返すfloat value = 0.0f;switch (index){case TREMOLO_SPEED value = (1 / fTremoloSpeed - 1.0f) / 29.0f; //1秒~1/30秒を0.0f~1.0fの範囲にするbreak;case TREMOLO_DEPTH value = fTremoloDepth;break;}return value;} void MyTremoloVST getParameterName (VstInt32 index, char* text){//indexで指定されたパラメータの名前をtextに格納する//kVstMaxParamStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxParamStrLen = 8)switch (index){case TREMOLO_SPEED vst_strncpy (text, "Speed", kVstMaxParamStrLen);break;case TREMOLO_DEPTH vst_strncpy (text, "Depth", kVstMaxParamStrLen);break;}} void MyTremoloVST getParameterLabel (VstInt32 index, char* label){//indexで指定されたパラメータの単位をlabelに格納する//kVstMaxParamStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxParamStrLen = 8)switch (index){case TREMOLO_SPEED vst_strncpy (label, "Hz", kVstMaxParamStrLen);break;case TREMOLO_DEPTH vst_strncpy (label, "dB", kVstMaxParamStrLen);break;}} void MyTremoloVST getParameterDisplay (VstInt32 index, char* text){//indexで指定されたパラメータの表示内容をtextに格納する//kVstMaxParamStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxParamStrLen = 8)switch (index){case TREMOLO_SPEED float2string (1.0f / fTremoloSpeed, text, kVstMaxParamStrLen);break;case TREMOLO_DEPTH float2string (fTremoloDepth, text, kVstMaxParamStrLen);break;}} // ============================================================================================// 音声信号を処理するメンバー関数// ============================================================================================void MyTremoloVST processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){//入力、出力は2次元配列で渡される。//入力は-1.0f~1.0fの間で渡される。//出力は-1.0f~1.0fの間で書き込む必要がある。//sampleFramesが処理するバッファのサイズfloat* inL = inputs[0]; //入力 左用float* inR = inputs[1]; //入力 右用float* outL = outputs[0]; //出力 左用float* outR = outputs[1]; //出力 右用 float dt = 1.0f / getSampleRate (); //1フレームで進む秒数float pi = 3.14159265f; //円周率 while (sampleFrames 0){//ここで音声処理を行う。 //dt分時間を進める。//トレモロ周期を超えた場合は、周期分戻す。fTime = fTime + dt;if (fTime fTremoloSpeed){fTime -= fTremoloSpeed;} //出力バッファへ書き込む。(*outL) = (*inL) * ( 1.0f - fTremoloDepth * (0.5f + 0.5f*sin(2.0f*pi*fTime/fTremoloSpeed)));(*outR) = (*inR) * ( 1.0f - fTremoloDepth * (0.5f + 0.5f*sin(2.0f*pi*fTime/fTremoloSpeed))); inL++;inR++;outL++;outR++;sampleFrames--;} } 誤字・脱字、内容の不備、要望等あれば教えてください。 また質問もこちらへお願いします。 名前 コメント 合計: - 今日: - 昨日: -